package xorm

import "path/filepath"

func (e *Engine) RegisterSqlTemplate(sqlt ISqlTemplate, Cipher ...Cipher) error {
	e.SqlTemplate = sqlt
	if len(Cipher) > 0 {
		e.SqlTemplate.SetSqlTemplateCipher(Cipher[0])
	}
	err := filepath.Walk(e.SqlTemplate.RootDir(), e.SqlTemplate.WalkFunc)
	if err != nil {
		return err
	}

	return nil
}

func (e *Engine) LoadSqlTemplate(filepath string) error {
	return e.SqlTemplate.LoadSqlTemplate(filepath)
}

func (e *Engine) BatchLoadSqlTemplate(filepathSlice []string) error {
	return e.SqlTemplate.BatchLoadSqlTemplate(filepathSlice)
}

func (e *Engine) ReloadSqlTemplate(filepath string) error {
	return e.SqlTemplate.ReloadSqlTemplate(filepath)
}

func (e *Engine) BatchReloadSqlTemplate(filepathSlice []string) error {
	return e.SqlTemplate.BatchReloadSqlTemplate(filepathSlice)
}

func (e *Engine) AddSqlTemplate(key string, sqlTemplateStr string) error {
	return e.SqlTemplate.AddSqlTemplate(key, sqlTemplateStr)
}

func (e *Engine) UpdateSqlTemplate(key string, sqlTemplateStr string) error {
	return e.SqlTemplate.UpdateSqlTemplate(key, sqlTemplateStr)
}

func (e *Engine) RemoveSqlTemplate(key string) {
	e.SqlTemplate.RemoveSqlTemplate(key)
}

func (e *Engine) BatchAddSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
	return e.SqlTemplate.BatchAddSqlTemplate(key, sqlTemplateStrMap)

}

func (e *Engine) BatchUpdateSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
	return e.SqlTemplate.BatchUpdateSqlTemplate(key, sqlTemplateStrMap)

}

func (e *Engine) BatchRemoveSqlTemplate(key []string) {
	e.SqlTemplate.BatchRemoveSqlTemplate(key)
}
